﻿using Kaskelot.SP.Services;
using Kaskelot.Web.ClientModel;
using Kaskelot.Web.Services;
using Kaskelot.Web.Services.Constants;
using Stockholm.SOA.Kaskelot.WCF.DataContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Kaskelot.Web.UserControls
{
	public partial class BytKurstillfalle : System.Web.UI.UserControl
	{
		public Person Person { get; set; }

		protected void Page_Load(object sender, EventArgs e)
		{
			if (Page.IsPostBack)
				return;

			Person = WebContext.Current.Person;

			if (Person != null)
			{
				try
				{
					Guid kursId = new Guid(Request.QueryString["KursId"]);

					using (WebService svc = new WebService())
					{
						IEnumerable<Guid> redanPlacerad = svc.GetKursTillfalleByPersonId(Person.Id).Select(kt => kt.Id);
						IEnumerable<KursTillfalle> kurser = svc.GetKursTillfallenByKursId(kursId).Where(kt => Int32.Parse(kt.LedigaPlatser) > 0 && !redanPlacerad.Contains(kt.Id)).OrderBy(kt => kt.Kursdatum).ThenBy(kt => kt.Starttid).ToArray();
						
						IList<KursTillfalleListItem> list = new List<KursTillfalleListItem>();

						foreach (KursTillfalle kt in kurser)
						{
							if (kt.Kursdatum < DateTime.Today)
								continue;

							list.Add(new KursTillfalleListItem()
							{
								KursNamn = kt.KursNamn,
								Adress = kt.Adress,
								Lokal = kt.Lokal,
								KursDatum = kt.Kursdatum.ToString("yyyy-MM-dd"),
								KursTid =
									kt.Starttid.Hours + ":" + kt.Starttid.Minutes.ToString().PadLeft(2, '0') +
									" - " +
									kt.Sluttid.Hours + ":" + kt.Sluttid.Minutes.ToString().PadLeft(2, '0'),
									KursTillfalleId = kt.Id.ToString()
							});
						}

						KursRepeater.DataSource = list;
						KursRepeater.DataBind();
					}
				}
				catch (Exception)
				{

				}
			}
		}

		protected void BytButton_Click(object sender, EventArgs e)
		{
			LinkButton b = (LinkButton)sender;

			Guid kurstillfalleId = new Guid(b.CommandArgument.ToString());

			using (WebService svc = new WebService())
			{
				IList<PersonKursTillfalle> lediga = svc.GetPersonKursTillfallenByKursTillfalleId(kurstillfalleId).Where(pkt => !pkt.PersonId.HasValue).ToList();

				if (lediga.Count() > 0)
				{
					PersonKursTillfalle pkt = lediga[0];

					pkt.PersonId = WebContext.Current.Person.Id;
					pkt.Andrad = DateTime.Now;
					pkt.AndradAv = WebContext.Current.Person.Personnummer;

					svc.UpdatePersonKursTillfalle(pkt);

					string script = "<script type='text/javascript'>kaskelot.web.kurs.redirect();</script>";
					Page.RegisterClientScriptBlock("RedirectScript", script);
				}
			}
		}
	}
}